/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jsf;

import br.data.crud.CrudClientes;
import br.data.model.Cidades;
import br.data.model.Clientes;
import br.data.model.Estados;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

/**
 *
 * @author WStrafacce
 */
@ManagedBean
@SessionScoped
public class RFacesClientes {

    private Integer codigocli;
    private Date datapagamento;
    private Date datacadastro;
    private Boolean status;
    private String valormensalidade;
    private String razaosocial;
    private String fantasia;
    private String cnpj;
    private String inscestadual;
    private String telefone;
    private String rua;
    private String complemento;
    private String bairro;
    private String logradouro;
    private String cep;
    private Integer numero;
    private String login;
    private String senha;
    private String responsavel;
    private String cpf;
    private String codigoest;
    private String codigocid;
    private Clientes cliente;
    private ArrayList<Clientes> listaClientes;

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getCodigocid() {
        return codigocid;
    }

    public void setCodigocid(String codigocid) {
        this.codigocid = codigocid;
    }

    public Integer getCodigocli() {
        return codigocli;
    }

    public void setCodigocli(Integer codigocli) {
        this.codigocli = codigocli;
    }

    public String getCodigoest() {
        return codigoest;
    }

    public void setCodigoest(String codigoest) {
        this.codigoest = codigoest;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Date getDatacadastro() {
        return datacadastro;
    }

    public void setDatacadastro(Date datacadastro) {
        this.datacadastro = datacadastro;
    }

    public Date getDatapagamento() {
        return datapagamento;
    }

    public void setDatapagamento(Date datapagamento) {
        this.datapagamento = new br.util.utilitarios().formatDate(datapagamento);
    }

    public String getFantasia() {
        return fantasia;
    }

    public void setFantasia(String fantasia) {
        this.fantasia = fantasia;
    }

    public String getInscestadual() {
        return inscestadual;
    }

    public void setInscestadual(String inscestadual) {
        this.inscestadual = inscestadual;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public Integer getNumero() {
        return numero;
    }

    public void setNumero(Integer numero) {
        this.numero = numero;
    }

    public String getRazaosocial() {
        return razaosocial;
    }

    public void setRazaosocial(String razaosocial) {
        this.razaosocial = razaosocial;
    }

    public String getResponsavel() {
        return responsavel;
    }

    public void setResponsavel(String responsavel) {
        this.responsavel = responsavel;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public Boolean getStatus() {
        return status;
    }

    public void setStatus(Boolean status) {
        this.status = status;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getValormensalidade() {
        return valormensalidade;
    }

    public void setValormensalidade(String valormensalidade) {
        this.valormensalidade = valormensalidade;
    }

    public Clientes getCliente() {
        return cliente;
    }

    public void setCliente(Clientes cliente) {
        this.cliente = cliente;
    }

    public ArrayList<Clientes> getListaClientes() {
        return listaClientes;
    }

    public void setListaClientes(ArrayList<Clientes> listaClientes) {
        this.listaClientes = listaClientes;
    }

    /** Creates a new instance of RFacesClientes */
    public RFacesClientes() {
        listaClientes = new ArrayList<Clientes>(new CrudClientes().getAll());
    }

    public Object getObject() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        RFacesUsers beanUsers = (RFacesUsers) facesContext.getApplication().createValueBinding("#{rFacesUsers}").getValue(facesContext);

        return beanUsers.getObject();
    }

    public Collection<Clientes> getAll() {
        return new CrudClientes().getAll();
    }

    public String clienteAlterarCadastro() {
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            RFacesUsers beanUsers = (RFacesUsers) facesContext.getApplication().createValueBinding("#{rFacesUsers}").getValue(facesContext);

            this.codigocli = beanUsers.getCli().getCodigocli();

            carregarPaginaAlteracao();

            return "cliente_alterar_cadastro.xhtml";
        } catch (Exception e) {
            return "errorPage.xhtml";
        }
    }

    public String adminAlterarCadastro() {
        try {
            java.util.Map<String, String> params = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

            int codCli = Integer.parseInt(params.get("codCli"));

            this.codigocli = codCli;


            carregarPaginaAlteracao();

            return "administrador_alterar_cliente.xhtml";
        } catch (Exception e) {
            return "errorPage.xhtml";
        }
    }

    public String save(ActionEvent actionEvent) {
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            Clientes cli;
            alterarCliente();
            if (this.getObject() instanceof Clientes) {
                new br.data.crud.CrudClientes().update(cliente);
                context.addMessage(null, new FacesMessage("Cadastro alterado com sucesso", null));
                return "cliente_index.xhtml";
            } else {
                new br.data.crud.CrudClientes().update(cliente);
                context.addMessage(null, new FacesMessage("Cadastro alterado com sucesso", null));
                return "administrador_index.xhtml";
            }

        } catch (Exception e) {
            context.addMessage(null, new FacesMessage("Falhas na atualização", null));
            return null;
        }
    }

    public void alterarCliente() {
        cliente.setBairro(bairro);
        cliente.setCep(cep);
        cliente.setCnpj(cnpj);
        cliente.setCodigocid(new Cidades(Integer.parseInt(codigocid)));
        cliente.setCodigoest(new Estados(Integer.parseInt(codigoest)));
        cliente.setComplemento(complemento);
        cliente.setCpf(cpf);
        cliente.setFantasia(fantasia);
        cliente.setInscestadual(inscestadual);
        cliente.setLogin(login);
        cliente.setLogradouro(logradouro);
        cliente.setNumero(numero);
        cliente.setRazaosocial(razaosocial);
        cliente.setResponsavel(responsavel);
        cliente.setRua(rua);
        cliente.setSenha(senha);
        cliente.setTelefone(telefone);
        cliente.setDatapagamento(datapagamento);
        cliente.setStatus(status);
        if (!valormensalidade.equals("null")) {
            cliente.setValormensalidade(Double.parseDouble(valormensalidade));
        }
    }

    public void carregarPaginaAlteracao() {
        try {

            cliente = new CrudClientes().getCliente(codigocli);

            this.bairro = cliente.getBairro();
            this.cep = cliente.getCep();
            this.cnpj = cliente.getCnpj();
            this.codigocid = String.valueOf(cliente.getCodigocid().getCodigocid());
            this.codigoest = String.valueOf(cliente.getCodigoest().getCodigoest());
            this.complemento = cliente.getComplemento();
            this.cpf = cliente.getCpf();
            this.datacadastro = cliente.getDatacadastro();
            this.fantasia = cliente.getFantasia();
            this.inscestadual = cliente.getInscestadual();
            this.login = cliente.getLogin();
            this.numero = cliente.getNumero();
            this.razaosocial = cliente.getRazaosocial();
            this.responsavel = cliente.getResponsavel();
            this.rua = cliente.getRua();
            this.senha = cliente.getSenha();
            this.status = cliente.getStatus();
            this.telefone = cliente.getTelefone();
            this.valormensalidade = String.valueOf(cliente.getValormensalidade());

        } catch (Exception e) {
        }

    }

    public String remover() {
        java.util.Map<String, String> param = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().
                getRequestParameterMap();

        this.codigocli = Integer.parseInt(param.get("codigo"));

        new CrudClientes().remove(codigocli);

        return "administrador_manter_clientes.xhtml";
    }
}
